package com.xiaoc.bulldozer.common.dao;

import java.util.List;

import com.xiaoc.bulldozer.common.dto.AccountDto;
import org.apache.ibatis.annotations.Param;

import com.xiaoc.bulldozer.common.dto.AccountQueryDto;
import com.xiaoc.bulldozer.common.model.Account;

/**
 * Account Mapper 接口
 *
 * @author Danfo Yam
 * @date 2018-08-24 15:47:58
 */
public interface AccountMapper {


    /**
     * 获取account集合
     *
     * @param accountQueryDto
     * @return
     */
    public List<AccountDto> getAccountList(AccountQueryDto accountQueryDto);


    /**
     * 获取account数量
     *
     * @param accountQueryDto
     * @return
     */
    public Integer getAccountCount(AccountQueryDto accountQueryDto);

    /**
     * 根据Id获取Account
     *
     * @param id
     * @return Account对象
     */
    public Account getAccountById(Integer id);

    /**
     * 获取所有Account列表
     *
     * @return Account列表
     */
    public List<Account> getAllAccountList();

    /**
     * 新增Account
     *
     * @param account
     * @return void
     */
    public void save(Account account);

    /**
     * 更新Account
     *
     * @param account
     * @return void
     */
    public void update(Account account);

    /**
     * 根据userId更新Account
     *
     * @param account
     * @return void
     */
    public void updateByUserId(Account account);

    /**
     * 根据Id删除Account
     *
     * @param id
     * @return void
     */
    public void deleteById(Integer id);

    /**
     * 根据userId获取Account
     *
     * @param userId
     * @return
     */
    public Account getAccountByUserId(Integer userId);


    /**
     * 根据phoneNumber获取account
     *
     * @param phoneNumber
     * @return
     */
    public Account getAccountByPhoneNumber(@Param("phoneNumber") String phoneNumber);

    /**
     * 获取渠道经理带来的注册列表
     * @param id
     * @return
     */
    public List<Account>  getAccountListByOwnerId(AccountQueryDto accountQueryDto);

    /**
     * 获取渠道经理带来的注册数量
     * @param id
     * @return
     */
    public Integer  getAccountCountByOwnerId(Integer id);

    /**
     * 通过parentAccountId 获取成功注册人数
     *
     * @param parentAccountId
     * @param status
     * @return
     */
    public Integer getRegisterSuccessCountByParentAccountId(@Param("parentAccountId") Integer parentAccountId);


    public Integer getRegisterSuccessCountByType();
}
